home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / lib / tx / default.tx < prev    next >
Text File  |  1991-05-23  |  6KB  |  179 lines

  1. # default.tx -
  2. #
  3. # This file is an initialization script read by Tx whenever it starts
  4. # up.  It defines a bunch of procedures, configures bindings, and
  5. # initializes variables.
  6. #
  7. # Copyright 1990 Regents of the University of California
  8. # Permission to use, copy, modify, and distribute this
  9. # software and its documentation for any purpose and without
  10. # fee is hereby granted, provided that the above copyright
  11. # notice appear in all copies.  The University of California
  12. # makes no representations about the suitability of this
  13. # software for any purpose.  It is provided "as is" without
  14. # express or implied warranty.
  15.  
  16. # Command procedures to extend the built-in command set:
  17.  
  18. proc showBindings {args} {
  19.     global newWindow
  20.     mxopen {}
  21.     mxsend $newWindow {insert Keystroke\ Bindings:\n}
  22.     mxsend $newWindow {insert ---------\ --------\n}
  23.     if {[length $args] == 0} {set args [bind]}
  24.     foreach binding $args {
  25.     mxsend $newWindow [list insert [format {\n%-10s => "%s"}
  26.         [control binding $binding] [bind $binding]]]
  27.     }
  28.     mxsend $newWindow clean
  29.     mxsend $newWindow {see 0.0}
  30. }
  31.  
  32. proc showMenus {args} {
  33.     global newWindow
  34.     mxopen {}
  35.     mxsend $newWindow {insert Menu\ information:\n}
  36.     mxsend $newWindow {insert ----\ -----------\n}
  37.     mxsend $newWindow {insert \n(Format:\ displayed\ information\ |\ command)}
  38.     if {[length $args] == 0} {set args [menu info]}
  39.     foreach i $args {
  40.     set leftSize 5
  41.     set midSize 5
  42.     set rightSize 5
  43.     mxsend $newWindow clean
  44.     foreach j [menu info $i] {
  45.         set t [length [index $j 0] chars]
  46.         if {$t > $leftSize} {set leftSize $t}
  47.         set t [length [index $j 1] chars]
  48.         if {$t > $midSize} {set midSize $t}
  49.         set t [length [index $j 2] chars]
  50.         if {$t > $rightSize} {set rightSize $t}
  51.     }
  52.     mxsend $newWindow [list insert [format \n\n%s: $i]]
  53.     foreach j [menu info $i] {
  54.         mxsend $newWindow [list insert [format {\n  %-*s %-*s %-*s | %s} \
  55.             $leftSize [index $j 0] $midSize [index $j 1] \
  56.             $rightSize [index $j 2] [index $j 3]]]
  57.     }
  58.     }
  59.     mxsend $newWindow clean
  60.     mxsend $newWindow {see 0.0}
  61. }
  62.  
  63. proc showProcs {args} {
  64.     global newWindow
  65.     mxopen {}
  66.     mxsend $newWindow {insert Procedure\ information:\n}
  67.     mxsend $newWindow {insert ---------\ -----------}
  68.     if {[length $args] == 0} {set args [info procs]}
  69.     foreach proc $args {
  70.     set space {}
  71.     mxsend $newWindow [list insert [format \n\n%s( $proc]]
  72.     mxsend $newWindow clean
  73.     foreach param [info args $proc] {
  74.         mxsend $newWindow [list insert [format %s%s $space $param]]
  75.         set space {, }
  76.         if [info default $proc $param default] {
  77.         mxsend $newWindow [list insert [format { [%s]} $default]]
  78.         }
  79.     }
  80.     mxsend $newWindow {insert ):\n}
  81.     mxsend $newWindow [list insert [info body $proc]]
  82.     }
  83.     mxsend $newWindow clean
  84.     mxsend $newWindow {see 0.0}
  85. }
  86.  
  87. proc showVars {args} {
  88.     global newWindow
  89.     mxopen {}
  90.     mxsend $newWindow {insert Variable\ values:\n}
  91.     mxsend $newWindow {insert --------\ -------\n}
  92.     set _maxLength 10
  93.     if {[length $args] == 0} {set args [uplevel {info vars}]}
  94.     foreach _i $args {
  95.     if {[length $_i chars] > $_maxLength} {
  96.         set _maxLength [length $_i chars]
  97.     }
  98.     }
  99.     set _maxLength [expr $_maxLength+6]
  100.     foreach _i $args {
  101.     mxsend $newWindow [list insert [format {\n%-*s = "%s"}
  102.         $_maxLength $_i [uplevel set $_i]]]
  103.     }
  104.     mxsend $newWindow clean
  105.     mxsend $newWindow {see 0.0}
  106. }
  107.  
  108. proc where {} {
  109.     global newWindow errorInfo
  110.  
  111.     if {![info exists errorInfo]} {
  112.     return "no error has occurred yet"
  113.     }
  114.     mxopen {}
  115.     mxsend $newWindow {insert "Stack trace for last error:\n"}
  116.     mxsend $newWindow {insert "----- ----- --- ---- ------\n\n"}
  117.     mxsend $newWindow [list insert $errorInfo]
  118.     mxsend $newWindow "clean; see 0.0"
  119. }
  120.  
  121. # Default bindings:
  122.  
  123. bind \Cv {insert [selection]}
  124. bind \Ca {insert !!\n}
  125. bind \Mf {search forw [selection]}
  126. bind \Mb {search back [selection]}
  127. bind \Mo {open;  send $newWindow {see eof bottom}}
  128. bind \Mc {focus command clear}
  129.  
  130. # Menus:
  131.  
  132. menu create Control \
  133.     {Set termcap} - - - {
  134.     insert set noglob\; setenv TERM tx\n
  135.     insert [format {setenv T1 "%s"} [range $termcap 0 100 chars]] \n
  136.     insert [format {setenv T2 "%s"} [range $termcap 101 200 chars]] \n
  137.     insert [format {setenv T3 "%s"} [range $termcap 201 end chars]] \n
  138.     insert setenv TERMCAP {"$T1$T2$T3"} \n
  139.     insert unset noglob\n
  140.     insert unsetenv T1 T2 T3\n
  141.     } \
  142.     {Clear and reset window} - - - {
  143.     vi leave
  144.     delete 1.0 [mark eof back 1 char]
  145.     selection clear
  146.     } \
  147.     {New window on typescript} - M-o - {
  148.     open
  149.     send $newWindow {see eof bottom}
  150.     } \
  151.     {Open command subwindow} - M-c - {focus command clear} \
  152.     {Disable escape sequences} - - - {escape off} \
  153.     {Enable escape sequences} - - - {escape on} \
  154.     {Enter vt100 mode} - - - {set oldgeom =[set width]x[set height] ; \
  155.         geometry =80x24 ; vi clear ; vi vt100 1} \
  156.     {Exit vt100 mode} - - - {geometry $oldgeom ; vi vt100 0} \
  157.     {Quit} - - - quit
  158. menu create Help \
  159.     {Info on last error} - - - {where} \
  160.     {Current key bindings} - - - {showBindings} \
  161.     {Current variable values} - - - {showVars} \
  162.     {Current menus} - - - {showMenus} \
  163.     {Current command procedures} - - - {showProcs}
  164. menu create Search \
  165.     {Search forward} - - - {search forw} \
  166.     {Search backward} - - - {search back} \
  167.     {Search forward for $sel} - {M-f} - {search forw [selection]} \
  168.     {Search backward for $sel} - {M-b} - {search back [selection]}
  169. menu create Selection \
  170.     {Copy $sel to caret} - {C-v} - {insert [selection]} \
  171.     {Delete $sel} - - - {delete sel.left sel.right}
  172.  
  173. # Variables:
  174. #
  175. # _ti --    used by termcap entry.
  176.  
  177. set searchCmd search
  178. set _ti 0
  179.